namespace Beaker.Specs
{
	/// <summary>
	/// A builder
	/// </summary>
	public interface IBuilder
	{
		/// <summary>
		/// Build the instance
		/// </summary>
		/// <returns>The build instance</returns>
		object Build();
	}

	/// <summary>
	/// A builder that builds the given type
	/// </summary>
	/// <typeparam name="TSubject">The type to build</typeparam>
	public interface IBuilder<out TSubject>
		: IBuilder
	{
		/// <summary>
		/// Build the instance
		/// </summary>
		/// <returns>The build instance</returns>
		new TSubject Build();
	}
}